package juego;

import java.awt.Image;
import java.io.IOException;

import exceptions.EspejoException;
import graphic.ImageUtils;

/**
 * Clase EspejoDoble.
 */
public class EspejoDoble extends Espejo{

	/**
	 * inicializa un nuevo espejo doble.
	 * 
	 * @param rot la rotacion
	 * @param rojo 
	 * @param verde
	 * @param azul 
	 * 
	 * @throws EspejoException una excepcion de espejo
	 */
	public EspejoDoble(int rot, int rojo, int verde, int azul) throws EspejoException{
		if(!validarRotacion(rot))
			throw new EspejoException("El espejo doble tiene que tener rotacion 0 o 1.");
		super.rotacion=rot;
		if(rojo!=0 | verde!=0 | azul!=0)
			throw new EspejoException("El espejo doble tiene mal los colores.");
	}	
	
	/* (non-Javadoc)
	 * @see juego.Elemento#dibujar()
	 */
	@Override
	public Image dibujar() {
		Image img1, img2 = null;
		try {
			img1 = ImageUtils.loadImage("resources/double-mirror.png");
			img2 = ImageUtils.rotateImage(img1, rotacion);
		} catch (IOException e) {
			System.out.println("Error al cargar la imagen.");			
		}
		return img2;
	}

	/* (non-Javadoc)
	 * @see juego.Espejo#rebotar(juego.Laser)
	 */
	@Override
	public boolean rebotar(Laser l1) {
		return false;
	}

	/* (non-Javadoc)
	 * @see juego.Espejo#validarRotacion(int)
	 */
	public boolean validarRotacion(int rot){
		if( rot==0 | rot==1 )
			return true;
		return false;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return "|";
	}

	public String toStringGuardar(){
		return "4,"+ this.rotacion+",0,0,0";
	}
		
	/* (non-Javadoc)
	 * @see juego.Espejo#getReturn(int)
	 */
	@Override
	public int[] getReturn(int anterior) {
		int aux[]= new int[3];
		aux[0] = 2;
		aux[1] = anterior<2?anterior+2:anterior-2;
		
		switch(anterior){
		case 0:
			if(super.rotacion==0)
				aux[2]=anterior+1;
			else
				aux[2]=anterior+3;
			break;
		case 1:
			if(super.rotacion==0)
				aux[2]=anterior-1;
			else
				aux[2]=anterior+1;
			break;
		case 2:
			if(super.rotacion==0)
				aux[2]=anterior+1;
			else
				aux[2]=anterior-1;
			break;
		case 3:
			if(super.rotacion==0)
				aux[2]=anterior-1;
			else
				aux[2]=anterior-3;
			break;
		}
		return aux;
	}
	
	/* (non-Javadoc)
	 * @see juego.Espejo#sumarRotacion()
	 */
	public void sumarRotacion(){
		if (rotacion==1)
			rotacion=0;
		else
			rotacion=1;
	}
}